#ifndef _CONFIG_H_
#define _CONFIG_H_

#ifdef CH58xBLE_ROM
#include "CH58xBLE_ROM.H"
#else
#include "CH58xBLE_LIB.H"
#endif

#include "CH58x_common.h"
//#define _RFID_FUNCTION_ENABLE_  1

/* 当前的产品类型 */
/***************************start*************************************/
#define MANUFACTURER_ID             _MANUFACTURER_HUAZHU_     //华住版本 
#define FUNCTION_ID                 _FUNCTION_NFC_            //NFC     
/***************************start*************************************/



/* 定义厂商编号 */
/***************************start*************************************/
#define _MANUFACTURER_YANGGE_                          0x00 //杨格
#define _MANUFACTURER_HUAZHU_                          0x01 //华住
#define _MANUFACTURER_HUAWEI_                          0x02 //华为
#define _MANUFACTURER_SHANGMEI_                        0x03 //尚美
#define _MANUFACTURER_SANTANG_                         0x04 //三唐
#define _MANUFACTURER_SHANGTANG_                       0x05 //商汤
#define _MANUFACTURER_TIANMAO_                         0x06 //天猫
/****************************end**************************************/
/* 定义功能编号 */
/***************************start*************************************/
#define _FUNCTION_NFC_BLE_                              0x01 //NFC+蓝牙+蜂鸣器
#define _FUNCTION_NFC_                                  0x02 //NFC
/****************************end**************************************/

                     

/* 电路板类型 */
#define _6681_BOARD_                        0x0100
#define _6681_A_BOARD_                      0x0101 // 241216板子有效
#define _6681_B_BOARD_                      0x0102 // 250407板子有效

#define _M157_BOARD_                        0x0200
#define _M157_A_BOARD_                      0x0201 // 250105板子有效

#define _9905_BOARD_                        0x0400
#define _9905_A_BOARD_                      0x0401 // 250103板子有效
#define _9905_B_BOARD_                      0x0402 // 台湾定制板子有效

#define _DA01_BOARD_                        0x0800
#define _DA01_A_BOARD_                      0x0801 // 250326板子有效

/* 定义锁体类型 */
#define _ELECTRONIC_LOCK_BODY_              1 // 电子锁体
#define _MECHANICAL_LOCK_BODY_              2 // 机械锁体

/* 定义开锁类型 */
#define _UNLOCK_MOTOR_                      1 // 电机
#define _UNLOCK_REALY_                      2 // 继电器

/* 定义联网模组类型 */
#define _RS485_MODULE_                      1 // 485
#define _ML307R_MODLE_                      2 // 中移CAT.1模组
#define _TP1107_MODULE_                     3 // 技象模组

/* 定时外部验证模组类型 */
#define _FACE_SAFETY_MODULE_                1 // 人脸
#define _QRCODE_SAFETY_MODULE_              2 // 二维码
#define _FINGER_SAFETY_MODULE_              3 // 指纹
#define _PALM_VEIN_SAFETY_MODULE_           4 // 掌纹

/* 定义播放音效类型 */
#define _VOICE_PLAY_BUZZ_                   1 // 蜂鸣器
#define _VOICE_PLAY_SPEAKER_                2 // 喇叭

/* 定义蜂鸣器类型 */
#define _ACTIVE_BUZZER_                     1 // 有缘蜂鸣器
#define _PASSIVE_BUZZER_                    2 // 无缘蜂鸣器

/* 定义实时时间输入源类型 */
#define _INTERNAL_CLOCK_SOURCE_             1 // 内部时钟源
#define _EXTERNAL_CLOCK_SOURCE_             2 // 外部时钟源

/* 定义卡片检测类型 */
#define _CARD_DETECTION_ADC_                1 // ADC
#define _CARD_DETECTION_LPCD_               2 // LPCD

/* 网络功能使能 */
#define _TCP_NETWORK_SERVICE_               1 // TCP
#define _MQTT_NETWORK_SERVICE_              2 // MQTT


#ifndef MANUFACTURER_ID
#define MANUFACTURER_ID                     _MANUFACTURER_HUAZHU_
#endif


#if (MANUFACTURER_ID == _MANUFACTURER_HUAZHU_)
// 功能

// 电路板类型
#define _BOARD_TYPE_                        _9905_A_BOARD_

#if FUNCTION_ID == _FUNCTION_NFC_
#define _RFID_FUNCTION_ENABLE_                TRUE
#define _ENABLE_ENCRYPTION_                   TRUE
// #define _BEVELED_LATCH_DETECTION_ENABLE_      TRUE
// #define _SQUARE_LATCH_DETECTION_ENABLE_       TRUE
// #define _BEVELED_LATCH_DETECTION_ENABLE_      TRUE
#endif

// 刷卡
#ifndef _RFID_FUNCTION_ENABLE_
#define _RFID_FUNCTION_ENABLE_                FALSE
#endif

// 按键
#ifndef _KEYBOARD_FUNCTION_ENABLE_
#define _KEYBOARD_FUNCTION_ENABLE_            FALSE
#endif

// 网络
#ifndef _SAFETY_VERIFYFUNCTION_ENABLE_
#define _SAFETY_VERIFYFUNCTION_ENABLE_        FALSE
#endif

// 网络
#ifndef _NETWOK_FUNCTION_ENABLE_
#define _NETWOK_FUNCTION_ENABLE_              FALSE
#endif

// 外部验证
#ifndef _EXTERNAL_VALIDATION_EN_
#define _EXTERNAL_VALIDATION_EN_              FALSE
#endif

// 加密配置位
#ifndef _ENABLE_ENCRYPTION_
#define _ENABLE_ENCRYPTION_                   FALSE
#endif
// DNS 使能位
#ifndef _DNS_SERVICE_ENABLE_
#define _DNS_SERVICE_ENABLE_                  FALSE
#endif

// 斜舌检测使能位
#ifndef _BEVELED_LATCH_DETECTION_ENABLE_
#define _BEVELED_LATCH_DETECTION_ENABLE_      FALSE
#endif
// 方舌检测使能位
#ifndef _BEVELED_LATCH_DETECTION_ENABLE_
#define _SQUARE_LATCH_DETECTION_ENABLE_       FALSE
#endif
// 锁舌检测使能位
#ifndef _LOCK_LATCH_DETECTION_ENABLE_
#define _LOCK_LATCH_DETECTION_ENABLE_         FALSE
#endif
// 霍尔传感器使能位
#ifndef _HALL_SENSOR_ENABLE_
#define _HALL_SENSOR_ENABLE_                  FALSE
#endif
// 防撬检测使能位
#ifndef _ANTI_SKID_DETECTION_ENABLE_
#define _ANTI_SKID_DETECTION_ENABLE_          FALSE
#endif
// 出门按钮
#ifndef _EXIT_BUTTON_DETECTION_ENABLE_
#define _EXIT_BUTTON_DETECTION_ENABLE_        FALSE
#endif
// 开锁方式
#ifndef _UNLOCK_TYPE_
#define _UNLOCK_TYPE_                       _UNLOCK_REALY_
#endif
// 网络模组类型（无）
#ifndef _NETWOK_MODLE_TYPE_
#define _NETWOK_MODLE_TYPE_                 _TP1107_MODULE_
#endif
// 外部验证模组类型（无）
#ifndef _SAFETY_MODULE_TYPE_
#define _SAFETY_MODULE_TYPE_                _FACE_SAFETY_MODULE_
#endif
// 音频播放类型
#ifndef _VOICE_PLAY_TYPE_
#define _VOICE_PLAY_TYPE_                   _VOICE_PLAY_BUZZ_
#endif
// 蜂鸣器类型
#ifndef _BUZZER_TYPE_
#define _BUZZER_TYPE_                       _PASSIVE_BUZZER_
#endif
// 实时时钟类型
#ifndef _REAL_TIME_CLOCK_SOURCE_
#define _REAL_TIME_CLOCK_SOURCE_           _INTERNAL_CLOCK_SOURCE_// _EXTERNAL_CLOCK_SOURCE_
#endif
// 卡片检测类型
#ifndef _CARD_DETECTION_TYPE_
#define _CARD_DETECTION_TYPE_               _CARD_DETECTION_LPCD_
#endif
// 网络服务类型
#ifndef _NETWORK_SERVICE_TYPE_
#define _NETWORK_SERVICE_TYPE_              _TCP_NETWORK_SERVICE_
#endif

#else

#endif

#ifndef BLE_MAC
#define BLE_MAC                             FALSE
#endif

#ifndef DCDC_ENABLE
#define DCDC_ENABLE                         FALSE
#endif

#ifndef HAL_SLEEP
#define HAL_SLEEP                           FALSE
#endif

#ifndef SLEEP_RTC_MIN_TIME                   
#define SLEEP_RTC_MIN_TIME                  US_TO_RTC(1000)
#endif

#ifndef SLEEP_RTC_MAX_TIME                   
#define SLEEP_RTC_MAX_TIME                  MS_TO_RTC(RTC_TO_MS(RTC_TIMER_MAX_VALUE) - 1000 * 60 * 60)
#endif

#ifndef WAKE_UP_RTC_MAX_TIME
#define WAKE_UP_RTC_MAX_TIME                US_TO_RTC(2000)
#endif

#ifndef TEM_SAMPLE
#define TEM_SAMPLE                          FALSE
#endif

#ifndef BLE_CALIBRATION_ENABLE
#define BLE_CALIBRATION_ENABLE              TRUE
#endif

#ifndef BLE_CALIBRATION_PERIOD
#define BLE_CALIBRATION_PERIOD              120000
#endif

#ifndef BLE_SNV
#define BLE_SNV                             TRUE
#endif

#ifndef BLE_SNV_ADDR
#define BLE_SNV_ADDR                        0x77E00 - FLASH_ROM_MAX_SIZE
#endif

#ifndef BLE_SNV_BLOCK
#define BLE_SNV_BLOCK                       256
#endif

#ifndef BLE_SNV_NUM
#define BLE_SNV_NUM                         1
#endif

#ifndef CLK_OSC32K
#define CLK_OSC32K                          1
#endif

#ifndef BLE_MEMHEAP_SIZE
#define BLE_MEMHEAP_SIZE                    (1024 * 20)
#endif

#ifndef BLE_BUFF_MAX_LEN
#define BLE_BUFF_MAX_LEN                    251
#endif

#ifndef BLE_BUFF_NUM
#define BLE_BUFF_NUM                        5
#endif

#ifndef BLE_TX_NUM_EVENT
#define BLE_TX_NUM_EVENT                    1
#endif

#ifndef BLE_TX_POWER
#define BLE_TX_POWER                        LL_TX_POWEER_0_DBM
#endif

#ifndef PERIPHERAL_MAX_CONNECTION
#define PERIPHERAL_MAX_CONNECTION           1
#endif

#ifndef CENTRAL_MAX_CONNECTION
#define CENTRAL_MAX_CONNECTION              3
#endif




/* 相关功能配置项 */
// #if ((_BOARD_TYPE_ & _6681_BOARD_) == _6681_BOARD_)
// #define _RFID_FUNCTION_ENABLE_                TRUE
// #define _KEYBOARD_FUNCTION_ENABLE_            TRUE
// #define _SAFETY_VERIFYFUNCTION_ENABLE_        TRUE
// #define _NETWOK_FUNCTION_ENABLE_              TRUE

// #elif ((_BOARD_TYPE_ & _M157_BOARD_) == _M157_BOARD_)
// #define _RFID_FUNCTION_ENABLE_                TRUE
// #define _KEYBOARD_FUNCTION_ENABLE_            FALSE
// #define _SAFETY_VERIFYFUNCTION_ENABLE_        FALSE
// #define _NETWOK_FUNCTION_ENABLE_              TRUE

// #elif ((_BOARD_TYPE_ & _9905_BOARD_) == _9905_BOARD_)
// // #define _RFID_FUNCTION_ENABLE_                TRUE
// // #define _KEYBOARD_FUNCTION_ENABLE_            FALSE
// // #define _SAFETY_VERIFYFUNCTION_ENABLE_        FALSE
// // #define _NETWOK_FUNCTION_ENABLE_              FALSE

// #elif ((_BOARD_TYPE_ & _DA01_BOARD_) == _DA01_BOARD_)
// #define _RFID_FUNCTION_ENABLE_                TRUE
// #define _KEYBOARD_FUNCTION_ENABLE_            FALSE
// #define _SAFETY_VERIFYFUNCTION_ENABLE_        FALSE
// #define _NETWOK_FUNCTION_ENABLE_              FALSE

// #endif

extern uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4];
extern const uint8_t MacAddr[6];

#endif
